mod_authnz_file
mod_authnz_file – moduł serwera Apache HTTP Server odpowiedzialny za uwierzytelnianie (authentication) oraz autoryzację (authorization) użytkowników przy użyciu prostych plików tekstowych. Moduł ten jest częścią rodziny mod_authnz i działa w połączeniu z innymi komponentami systemu kontroli dostępu, takimi jak mod_auth_basic czy mod_auth_digest.
Historia
Moduł mod_authnz_file po raz pierwszy pojawił się w wersji 2.0 serwera Apache, wydanej w 1999 roku. Wcześniej uwierzytelnianie i autoryzacja realizowano wyłącznie przy pomocy mod_auth oraz mod_auth_dbm. Wprowadzenie mod_authnz_file umożliwiło administratorom prostsze zarządzanie listami użytkowników przy pomocy zwykłych plików tekstowych, co znacznie ułatwiło konfigurację małych i średnich serwisów internetowych.
Podstawowe funkcje
- Weryfikacja tożsamości użytkownika na podstawie nazwy użytkownika i hasła przechowywanego w pliku
.htpasswdlub innym pliku konfiguracyjnym. - Sprawdzanie przynależności użytkownika do określonych grup przy użyciu pliku
.htgroup. - Obsługa standardowych algorytmów haszowania, takich jak MD5, SHA1 czy bcrypt.
- Możliwość definiowania indywidualnych reguł autoryzacji przy użyciu dyrektyw
Require.
Konfiguracja
Moduł jest zazwyczaj włączany w pliku konfiguracyjnym httpd.conf lub w lokalnych plikach .htaccess za pomocą dyrektywy LoadModule:
LoadModule authnz_file_module modules/mod_authnz_file.so
Następnie w obrębie dyrektywy <Directory> lub <Location> definiuje się zasady uwierzytelniania i autoryzacji:
<Directory "/var/www/secure">
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /etc/apache2/.htpasswd
AuthGroupFile /etc/apache2/.htgroup
Require valid-user
</Directory>
W powyższym przykładzie:
AuthType Basicokreśla metodę uwierzytelniania.AuthNamedefiniuje tekst wyświetlany w oknie logowania.AuthUserFilewskazuje plik zawierający pary użytkownik:hasło.AuthGroupFilewskazuje plik grup, w którym określa się członkostwo w grupach.Require valid-userwymaga, by każdy zarejestrowany użytkownik uzyskał dostęp.
Plik .htpasswd
Plik ten może być generowany przy pomocy narzędzia htpasswd, które jest dostarczane razem z Apache. Przykładowe polecenie tworzące nowego użytkownika:
htpasswd -c /etc/apache2/.htpasswd janek
Po uruchomieniu programu zostanie poproszony o podanie hasła, które zostanie zapisane w zaszyfrowanej formie.
Plik .htgroup
Struktura pliku grup jest prosta: każda linia definiuje jedną grupę i listę jej członków oddzielonych spacjami.
admin: janek admi
redaktorzy: anna piotr
Po zdefiniowaniu grup można stosować bardziej szczegółowe reguły typu:
Require group admin
Powiązane moduły
W ekosystemie Apache istnieje szereg modułów współpracujących z mod_authnz_file:
- mod_auth_basic – implementuje podstawowy protokół uwierzytelniania HTTP.
- mod_auth_digest – zapewnia uwierzytelnianie oparte na haśle digesta, bardziej odporne na podsłuchiwanie.
- mod_authn_core – definiuje podstawowy interfejs uwierzytelniania dla wszystkich modułów.
- mod_authz_core – definiuje podstawowy interfejs autoryzacji.
- mod_authnz_ldap – umożliwia uwierzytelnianie i autoryzację przy użyciu katalogu LDAP.
Bezpieczeństwo
Chociaż mod_authnz_file jest prosty w użyciu, istnieją pewne ograniczenia bezpieczeństwa:
- Pliki
.htpasswdi.htgroupmuszą być chronione przed nieautoryzowanym dostępem na poziomie systemu operacyjnego. - Używanie algorytmów szyfrowania przestarzałych (np.
crypt) nie jest zalecane – lepiej wybraćbcryptlubSHA256. - Dla dużych serwisów zaleca się migrację do bardziej skalowalnych rozwiązań, takich jak mod_authnz_ldap lub mod_auth_openidc.